1
L'impératif de performance
AI031Lesson 5
00:00

L'optimisation moderne repose sur un partenariat entre le choix d'algorithmes de haut niveau et la conscience des caractéristiques matérielles. Alors que Efficacité asymptotique définit les limites théoriques, l' impératif de performance exige que nous abordions facteurs constants que les compilateurs ne peuvent pas résoudre seuls.

1. La hiérarchie de l'optimisation

Le succès suit un processus linéaire : tout d'abord, éliminez l'inefficacité asymptotique (par exemple, $O(N^2) \to O(N)$). Ensuite, abordez obstacles à l'optimisation—principalement aliasing mémoire et le surcoût des appels de procédure (comme le contrôle des bornes constantes contrôle des bornes dans get_vec_element).

2. Flux de données et contraintes

Les compilateurs sont prudents par souci de sécurité ; ils n'optimiseront pas si un pointeur *dest pourrait chevaucher le vecteur data. Nous mesurons la vitesse en conditions réelles par cycles par élément (CPE). La performance est souvent modélisée par des facteurs d'échelle comme $\alpha = 0.974$, où le surcoût déplace la courbe d'exécution (par exemple, $209/\alpha = 39.0$).

150100500Inférieur linéaireMeilleur hachageGrande tableTrier rapidementInitialLinéaireInférieurMeilleurHachageGrandTableTrier rapidementInitialBottleneck asymptotiqueFigure 5.38(a) : Échelle de performance des n-grammes (secondes CPU)

3. Réalités matérielles

L'optimisation exige une compréhension du unité de retrait et du chemin critique. Même les boucles simples sont limitées par la borne de débit des unités fonctionnelles ou la borne de latence des chaînes de dépendances.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>